package org.jmc.refmanager.domain.dao;

import java.util.List;

import org.jmc.refmanager.domain.model.OrgUnit;

public interface OrgUnitDao extends GenericDao<OrgUnit, Integer> {

	/**
	 * Retourne la liste des direction (type='C02')
	 * @return
	 */
	public List<OrgUnit> listDirections();
	
	/**
	 * Recherche la direction de validation contenant le service.
	 * Parmi les ancetres du service, rechercher le service de
	 * type C02.
	 * 
	 * @param service
	 * @return
	 */
	public OrgUnit getDirectionValidation(OrgUnit service);
	
	/**
	 * Supprime la hierarchie.
	 * 
	 * Pour tous les fils:
	 * - Positionne le flag "supprime" e true
	 * - Ajoute le motif de suppression
	 * 
	 * @param rootService
	 */
	public void deleteHierarchy(OrgUnit rootService);
	
	/**
	 * 
	 * @param service
	 * @param newParent
	 */
	public void moveHierarchy(OrgUnit service, Integer newParentId);
}
